import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import router, { asyncRoutes } from '@/router'
import store from './store'
const whiteList = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  // 开启进度条
  NProgress.start()

  const token = store.getters.token
  if (token) {
    // 如果访问的是login,就直接进入主页
    if (to.path === '/login') {
      next('/')
      NProgress.done()
    } else {
      // 在进入主页之前: 发请求获取用户信息
      // if (还没有拿到用户数据) {}
      // store.state.user.userInfo.userId
      console.log('userId', store.getters.userId)
      if (!store.getters.userId) {
        // 拿到信息：名字，头像，... menus:[可以访问的页面]
        const res = await store.dispatch('user/getProfile')
        console.log('当前用户一共可以访问', res.roles.menus, asyncRoutes)

        // 动态生成当前的用户能访问的页面
        // asyncRoutes 一共有8个页面
        const filteredRoutes = asyncRoutes.filter(item => {
          return res.roles.menus.includes(item.children[0].name)
        })
        console.log('filteredRoutes', filteredRoutes)
        filteredRoutes.push({ path: '*', redirect: '/404', hidden: true })
        // 1. 渲染左侧菜单 ?
        store.commit('menu/setMenus', filteredRoutes)
        // 2. 添加到路由配置
        router.addRoutes(filteredRoutes)
        next(to)
      } else {
        next()
      }
      // }
    }
  } else {
    // 如果没有token，判断要进入的页面是不是白名单
    if (whiteList.includes(to.path)) {
      console.log('没有token,去的页面是白名单，放行')
      next()
    } else {
      console.log('没有token,去的页面不是白名单，去登录')
      next('/login')
      NProgress.done()
    }
  }
})

/* router.beforeEach((to, from, next) => {
  console.log('这时第二个路由守卫, 你要去的页面是', to.meta.title)
  document.title = to.meta.title
  next()
}) */

router.afterEach(() => {
  NProgress.done()
})
